From: Jimi Xenidis Date: Thu, 14 Sep 2006 05:12:26 +0000 (-0400) Subject: [POWERPC][XEN] Define all cache information globaly X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~15658^2~67 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success//%22http:/www.example.com/cgi/success/?a=commitdiff_plain;h=46984439ddc11129104c864889ab6b2be0efe3b1;p=xen.git [POWERPC][XEN] Define all cache information globaly Rather than use the config.h macro Signed-off-by: Jimi Xenidis Signed-off-by: Hollis Blanchard --- diff --git a/xen/arch/powerpc/dart.c b/xen/arch/powerpc/dart.c index 50d644122f..0de55a58d7 100644 --- a/xen/arch/powerpc/dart.c +++ b/xen/arch/powerpc/dart.c @@ -114,7 +114,7 @@ static void dart_fill(ulong index, int perm, ulong rpg, ulong num_pg) ++rpg; if (i == num_pg) break; - if (((ulong)&entry[i]) % CACHE_LINE_SIZE == 0) { + if ((((ulong)&entry[i]) % cpu_caches.dline_size) == 0) { last_flush = (ulong)&entry[i - 1]; dcbst(last_flush); } @@ -134,7 +134,7 @@ static void dart_clear(ulong index, ulong num_pg) ++i; if (i == num_pg) break; - if (((ulong)&entry[i]) % CACHE_LINE_SIZE == 0) { + if ((((ulong)&entry[i]) % cpu_caches.dline_size) == 0) { last_flush = (ulong)&entry[i - 1]; dcbst(last_flush); } @@ -263,7 +263,7 @@ static int init_dart(void) /* Linux uses a dummy page, filling "empty" DART entries with a reference to this page to capture stray DMA's */ dummy_page = (ulong)alloc_xenheap_pages(1); - memset((void *)dummy_page, 0, PAGE_SIZE); + clear_page((void *)dummy_page); dummy_page >>= PAGE_SHIFT; printk("Initializing DART 0x%lx: tbl: %p[0x%lx] entries: 0x%lx\n", diff --git a/xen/arch/powerpc/powerpc64/ppc970.c b/xen/arch/powerpc/powerpc64/ppc970.c index d175b9a300..8a8de16e4c 100644 --- a/xen/arch/powerpc/powerpc64/ppc970.c +++ b/xen/arch/powerpc/powerpc64/ppc970.c @@ -34,6 +34,15 @@ #undef DEBUG #undef SERIALIZE +struct cpu_caches cpu_caches = { + .dline_size = 0x80, + .log_dline_size = 7, + .dlines_per_page = PAGE_SIZE >> 7, + .iline_size = 0x80, + .log_iline_size = 7, + .ilines_per_page = PAGE_SIZE >> 7, +}; + struct rma_settings { int order; int rmlr_0; diff --git a/xen/include/asm-powerpc/cache.h b/xen/include/asm-powerpc/cache.h index db1315dcf1..7f5a89a0b0 100644 --- a/xen/include/asm-powerpc/cache.h +++ b/xen/include/asm-powerpc/cache.h @@ -59,4 +59,15 @@ static __inline__ void synchronize_caches(ulong start, size_t len) #define __read_mostly +struct cpu_caches { + u32 dsize; /* L1 d-cache size */ + u32 dline_size; /* L1 d-cache line size */ + u32 log_dline_size; + u32 dlines_per_page; + u32 isize; /* L1 i-cache size */ + u32 iline_size; /* L1 i-cache line size */ + u32 log_iline_size; + u32 ilines_per_page; +}; +extern struct cpu_caches cpu_caches; #endif diff --git a/xen/include/asm-powerpc/config.h b/xen/include/asm-powerpc/config.h index bfa59ed3e5..154938fe4d 100644 --- a/xen/include/asm-powerpc/config.h +++ b/xen/include/asm-powerpc/config.h @@ -44,9 +44,6 @@ extern char __bss_start[]; #define ALIGN_UP(addr,size) (((addr)+((size)-1))&(~((size)-1))) #define ALIGN_DOWN(addr,size) ((addr)&(~((size)-1))) -/* this should be per processor, but for now */ -#define CACHE_LINE_SIZE 128 - /* 256M - 64M of Xen space seems like a nice number */ #define CONFIG_MIN_DOM0_PAGES (192 << (20 - PAGE_SHIFT)) #define CONFIG_SHADOW 1